#include <sys\types.h> #include <sys\stat.h> int fstat(handle,buffer); int handle; handle-р, ссылающийся на открытый файл. struct stat *buffer; указатель на структуру хранения результатов.
Описание:
Функция fstat получает информацию об открытом файле, связанным с данным handle -ром, и запоминает ее в структуре, на которую указывает buffer . Структура, тип stat которой объявлен в <sys\stat.h> , содержит следующие поля:
Поле Значение
st_mode Битовая маска для информации о режиме
файла. Бит S_IFCHR устанавливается,
если handle ссылается на устройство.
Бит S_IFREG устанавливается, если
handle ссылается на обычный файл. Биты
чтения/записи пользователей устанавли-
ваются соответственно режиму доступа
для файла.
st_dev Либо номер устройства диска, содержащего
файл, либо handle - в случае другого
устройства.
st_rdev Либо номер устройства диска,содержащего
файл, либо handle - в случае другого
устройства
(аналогично st_dev).
st_nlink Всегда 1.
st_size Размер файла в байтах.
st_atime Время последней модификации файла.
st_mtime Время последней модификации файла
(аналогично st_atime).
st_ctime Время последней модификации файла
(аналогично st_atime и st_mtime).
В структуре типа stat существуют три дополнительных поля, которые для MS DOS не имеют смысла.
Возвращаемое значение:
Функция fstat возвращает значение 0, если информация о статусе файла получена. Возвращаемое значение -1 свидетельствует об ошибке; в этом случае errno устанавливается в EBADF , определяя тем самым неверный файловый handle.
Замечание!
Если заданный handle ссылается на устройство, поля размера и времени в структуре stat не имеют смысла.
Пример.
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <stdio.h>
struct stat buf;
int fh, result;
fh=open("tmp/data", O_RDONLY);
.
.
.
result=fstat(fh,&buf);
if (result==0)
printf("file size is %ld\n",buf.st_size);